Comment supprimer des images, des conteneurs et des volumes Docker

Une feuille de triche Docker

introduction

Docker simplifie l’enveloppement de vos applications et services dans des conteneurs afin de pouvoir les exécuter n’importe où. Toutefois, lorsque vous travaillez avec Docker, il est également facile d’accumuler un nombre excessif d’images, de conteneurs et de volumes de données inutilisés qui encombrent la sortie et consomment de l’espace disque.

Docker vous fournit tous les outils dont vous avez besoin pour nettoyer votre système à partir de la ligne de commande. Ce guide de style aide-mémoire fournit une référence rapide aux commandes utiles pour libérer de l’espace disque et garder votre système organisé en supprimant les images, les conteneurs et les volumes Docker inutilisés.

La syntaxe de substitution de commande, + $ () +, utilisée dans les commandes est disponible dans de nombreux shells populaires tels que bash, zsh et Windows Powershell.

Purge de toutes les images, conteneurs, volumes et réseaux inutilisés ou en suspension

Docker fournit une commande unique qui nettoie toutes les ressources (images, conteneurs, volumes et réseaux) en suspens (non associées à un conteneur):

docker system prune

Pour supprimer en outre tous les conteneurs arrêtés et toutes les images inutilisées (pas seulement les images suspendues), ajoutez l’indicateur + -a + à la commande:

docker system prune -a

Suppression des images Docker

Supprimer une ou plusieurs images spécifiques

Utilisez la commande + docker images + avec l’indicateur + -a + pour localiser l’ID des images à supprimer. Cela vous montrera chaque image, y compris les couches d’image intermédiaires. Lorsque vous avez localisé les images que vous souhaitez supprimer, vous pouvez transmettre leur identifiant ou leur balise à + ​​docker rmi +:

Liste:

docker images -a

Retirer:

docker rmi

Supprimer les images pendantes

Les images Docker se composent de plusieurs couches. Les images pendantes sont des calques sans relation avec les images marquées. Ils ne servent plus à rien et consomment de l’espace disque. Ils peuvent être localisés en ajoutant l’indicateur de filtre + -f + avec la valeur + dangling = true + à la commande + docker images +. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez utiliser la commande + docker images purge +:

Liste:

docker images -f dangling=true

Retirer:

docker images purge

Suppression d’images selon un motif

Vous pouvez trouver toutes les images correspondant à un motif en combinant + docker images + et https://www.digitalocean.com/community/tutorials/using-grep-regular-expressions-to-search-for-text- patterns-in-linux [+ grep +]. Une fois que vous êtes satisfait, vous pouvez les supprimer en utilisant + awk + pour transmettre les identifiants à + ​​docker rmi +. Notez que ces utilitaires ne sont pas fournis par Docker et ne sont pas nécessairement disponibles sur tous les systèmes:

Liste:

docker images -a |  grep ""

Retirer:

docker images -a | grep "" | awk '{print $3}' | xargs docker rmi

Supprimer toutes les images

Toutes les images Docker sur un système peuvent être répertoriées en ajoutant + -a + à la commande + docker images +. Une fois que vous êtes sûr de vouloir tous les supprimer, vous pouvez ajouter l’indicateur + -q + pour transmettre l’ID d’image à + ​​docker rmi +:

Liste:

docker images -a

Retirer:

docker rmi $(docker images -a -q)

Retrait des conteneurs

Supprimer un ou plusieurs conteneurs spécifiques

Utilisez la commande + docker ps + avec l’indicateur + -a + pour localiser le nom ou l’ID des conteneurs que vous souhaitez supprimer:

Liste:

docker ps -a

Retirer:

docker rm

Retirer un conteneur à la sortie

Si vous savez, lorsque vous créez un conteneur, que vous ne souhaitez plus le conserver une fois que vous avez terminé, vous pouvez exécuter + docker run --rm + pour le supprimer automatiquement à sa fermeture.

docker run --rm

Supprimer tous les conteneurs sortis

Vous pouvez localiser les conteneurs à l’aide de + docker ps -a + et les filtrer en fonction de leur statut: créé, en cours de redémarrage, en cours d’exécution, mis en pause ou quitté. Pour examiner la liste des conteneurs sortis, utilisez l’indicateur + -f + pour filtrer en fonction de l’état. Lorsque vous avez vérifié que vous souhaitez supprimer ces conteneurs, utilisez + -q + pour transmettre les ID à la commande + docker rm +.

Liste:

docker ps -a -f status=exited

Retirer:

docker rm $(docker ps -a -f status=exited -q)

Supprimer les conteneurs à l’aide de plusieurs filtres

Les filtres Docker peuvent être combinés en répétant l’indicateur de filtre avec une valeur supplémentaire. Il en résulte une liste de conteneurs qui remplissent l’une ou l’autre condition. Par exemple, si vous souhaitez supprimer tous les conteneurs marqués soit * Created * (un état qui peut apparaître lorsque vous exécutez un conteneur avec une commande non valide) ou * Exited *, vous pouvez utiliser deux filtres:

Liste:

docker ps -a -f status=exited -f status=created

Retirer:

docker rm $(docker ps -a -f status=exited -f status=created -q)

Retirer les contenants selon un motif

Vous pouvez trouver tous les conteneurs correspondant à un modèle en combinant + docker ps + et https://www.digitalocean.com/community/tutorials/using-grep-regular-expressions-to-search-for-text- patterns-in-linux [grep]. Lorsque vous êtes convaincu que vous avez la liste que vous souhaitez supprimer, vous pouvez utiliser + awk + et + xargs + pour fournir l’ID à + ​​docker rmi +. Notez que ces utilitaires ne sont pas fournis par Docker et ne sont pas nécessairement disponibles sur tous les systèmes:

Liste:

docker ps -a |  grep "”

Retirer:

docker ps -a | grep "" | awk '{print $3}' | xargs docker rmi

Arrêtez et retirez tous les conteneurs

Vous pouvez examiner les conteneurs sur votre système avec + docker ps +. L’ajout de l’indicateur + -a + affichera tous les conteneurs. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez ajouter l’indicateur + -q + pour fournir les identifiants aux commandes + docker stop + et + docker rm +:

Liste:

docker ps -a

Retirer:

docker stop $(docker ps -a -q)

docker rm $(docker ps -a -q)

Supprimer des volumes

Supprimer un ou plusieurs volumes spécifiques - Docker 1.9 et versions ultérieures

Utilisez la commande + docker volume ls + pour localiser le nom du volume ou les noms que vous souhaitez supprimer. Ensuite, vous pouvez supprimer un ou plusieurs volumes avec la commande + docker volume rm +:

Liste:

docker volume ls

Retirer:

docker volume rm

Supprimer les volumes suspendus - Docker 1.9 et versions ultérieures

Étant donné que le point des volumes doit exister indépendamment des conteneurs, lorsqu’un volume est supprimé, un volume n’est pas automatiquement supprimé en même temps. Lorsqu’un volume existe et qu’il n’est plus connecté à aucun conteneur, il est appelé volume suspendu. Pour les localiser et confirmer que vous souhaitez les supprimer, vous pouvez utiliser la commande + docker volume ls + avec un filtre pour limiter les résultats aux volumes suspendus. Lorsque vous êtes satisfait de la liste, vous pouvez tous les supprimer avec + docker volume prune +:

Liste:

docker volume ls -f dangling=true

Retirer:

docker volume prune

Supprimer un conteneur et son volume

Si vous avez créé un volume sans nom, vous pouvez le supprimer en même temps que le conteneur avec l’indicateur + -v +. Notez que cela ne fonctionne qu’avec les volumes unnamed. Lorsque le conteneur est supprimé avec succès, son ID est affiché. Notez qu’aucune référence n’est faite à la suppression du volume. S’il n’est pas nommé, il est supprimé du système de manière silencieuse. S’il est nommé, il reste présent en silence.

Retirer:

docker rm -v

Conclusion

Ce guide couvre certaines des commandes courantes utilisées pour supprimer des images, des conteneurs et des volumes avec Docker. Il existe de nombreuses autres combinaisons et indicateurs pouvant être utilisés avec chacun. Pour un guide complet sur ce qui est disponible, consultez la documentation de Docker pour docker rmi